﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using Data;

namespace prjCompras
{
    public partial class frmRelCartaCotacao : Form
    {
        public frmRelCartaCotacao()
        {
            InitializeComponent();
        }

        private void btnGerar_Click(object sender, EventArgs e)
        {
            string sql = @"set dateformat 'dmy';
                            select cc.Codigo, 
	                               cc.Data, 
	                               f.Nome,
	                               rc.DataEntrega, 
	                               ISNULL(rc.ValorFrete, 0) Frete,
	                               cc.CodigoRequisicao,
	                               ISNULL(SUM(rcm.QtdAtendida * rcm.ValorUnitario), 0) Total,
	                               case when rc.PedidoGerado = 0 or rc.PedidoGerado is null  then 'Não' else 'Sim' end pedido_gerado
                              from CartaCotacao cc left join
                                   RespostaCotacao rc on cc.Codigo = rc.CodigoCotacao left join RespostaCotacaoMaterial rcm on rc.Codigo = rcm.CodigoRespostaCotacao,
                                   Fornecedor f
                             where f.CNPJ = cc.CNPJFornecedor";

            if (chckbxData.Checked)
            {
                sql += " and cc.Data between '" + dtmpckerDataInicio.Value.ToShortDateString() + "' and '" + dtmpckerDataFim.Value.ToShortDateString() + "'";
            }

            if (txtbxFornecedor.Text != string.Empty)
            {
                sql += " and f.Nome like '" + txtbxFornecedor.Text + "%'";
            }

            if (chckbxDataEntrega.Checked)
            {
                sql += " and rc.DataEntrega between '" + dtmpckrDataEntregaInicio.Value + "' and '" +
                    dtmpckrDataEntregaFim.Value + "'";
            }

            if (txtbxRequisicao.Text != string.Empty)
            {
                sql += " and cc.CodigoRequisicao = " + txtbxRequisicao.Text;
            }

            sql += @" group by cc.Codigo, 
	                           cc.Data, 
	                           f.Nome,
	                           rc.DataEntrega, 
	                           rc.ValorFrete,
	                           cc.CodigoRequisicao,
	                           rc.PedidoGerado";

            SqlDataAdapter dt = Conexao.getInstance.executeQueryRelatorio(sql);

            dtstCartaCotacao dt_req = new dtstCartaCotacao();
            dt.Fill(dt_req, "CartaCotacao");

            sql = @"select m.Codigo,
	                        m.Nome,
	                        ccm.Quantidade qtde_ped,
	                        rcm.QtdAtendida,
	                        rcm.ValorUnitario,
	                        rcm.QtdAtendida * rcm.ValorUnitario total,
                            ccm.CodigoCartaCotacao
                        from CartaCotacaoMaterial ccm left join RespostaCotacao rc
                                on rc.CodigoCotacao = ccm.CodigoCartaCotacao left join RespostaCotacaoMaterial rcm
                                on rcm.CodigoRespostaCotacao = rc.Codigo,
                            Material m       
                        where ccm.CodigoMaterial = m.Codigo
                        and (ccm.CodigoMaterial = rcm.CodigoMaterial or rcm.CodigoMaterial is null)";
;
            dt = Conexao.getInstance.executeQueryRelatorio(sql);
            dt.Fill(dt_req, "CartaCotacaoMaterial");

            rptCartaCotacao rel = new rptCartaCotacao();
            rel.SetDataSource(dt_req);
            frmRelatorio f = new frmRelatorio();
            f.Text = "Relatório de Carta de Cotação";
            f.crystalReportViewer1.ReportSource = rel;
            f.ShowDialog();
        }

        private void chckbxData_Click(object sender, EventArgs e)
        {
            grpbxData.Enabled = chckbxData.Checked;
        }

        private void chckbxDataEntrega_Click(object sender, EventArgs e)
        {
            grpbxDataEntrega.Enabled = chckbxDataEntrega.Checked;
        }
    }
}
